<?php
/**
 * Created by PhpStorm.
 * User: lenovo
 * Date: 2020/6/17
 * Time: 15:36
 */

namespace App\Services;

use App\Model\FriendModel;
use App\Model\MsgModel;
use App\Model\UserModel;


class PrivateMsgService
{
    #消息类型：1文本2语音3图片4地理位置5红包6名片7视频8添加好友申请9移除群聊通知10用户信息变更11消息发送结果12群信息变更通知13群解散14群管理员踢人15用户退出群聊
    const MSG_TYPE_TEXT = 1;//文本
    const MSG_TYPE_VOICE = 2;//语音消息
    const MSG_TYPE_IMAGE = 3;//图片消息
    const MSG_TYPE_LOCATION = 4;//位置消息
    const MSG_TYPE_RED_ENVELOPE = 5;//红包消息
    const MSG_TYPE_CALLING_CARD = 6;//名片消息
    const MSG_TYPE_VIDEO = 7;//视频消息
    const MSG_TYPE_ADD_FRIEND = 8;//添加好友申请消息
    const MSG_TYPE_GROUP_REMOVED = 9;//被移除群聊
    const MSG_TYPE_USER_INFO_CHANGE = 10;//用户信息变更
    const MSG_TYPE_MSG_REPONSE = 11;//消息发送结果
    const MSG_TYPE_GROUP_CHANGE = 12;//群信息变更通知（昵称、头像）
    const MSG_TYPE_GROUP_DEL = 13;//群解散
    const MSG_TYPE_GROUP_REMOVE = 14;//群管理员踢人
    const MSG_TYPE_GROUP_LEAVE = 15;//用户退出群聊
    const MSG_TYPE_GROUP_JOIN = 16;//用户加入群聊
    const MSG_TYPE_GROUP_INVITE = 17;//邀请用户加入群聊
    const MSG_TYPE_DIY= 18;//用户自定义消息，自定义的消息放extra
    const MSG_TYPE_BASE= 19;//最近联系人、群基础信息
    const MSG_TYPE_AUTO_BREAK= 20;//服务端主动断开
    const MSG_TYPE_FILE = 21;//文件
    const MSG_GROUP_CREATE = 22;//创建群
    const MSG_TYPE_GROUP_MEMBER_INFO_CHANGE= 23;//群成员变动
    const MSG_SUB_TYPE_GROUP = 'group'; #系统消息子分类，群消息
    const MSG_SUB_TYPE_PERSONAL = 'personal'; #系统消息子分类，个人消息




    /**软删除用户信息
     * @param $param
     * @param $userInfo
     */
    public function clearMsg($param,$userInfo){
        try{
            $where = [];
            $friendUserId = UserModel::create()->where(['app_id'=>$userInfo['app_id'],'app_user_id'=>$param['extra']['app_user_id']])->column('id');
           if(empty($friendUserId)){
               return ReponseCodeService::CODE_FAILE;
           }

            $unionid = FriendModel::create()->where(['user_id'=>$userInfo['id'],'friend_user_id'=>$friendUserId])->column('unionid');
           if(empty($unionid)){
               return ReponseCodeService::CODE_FAILE;
           }

            #修改投递状态的内容为删除状态
            $where = array(
                'to_id'=>[$userInfo['id'],'<='],
                'unionid'=>$unionid,
            );

             if(MsgModel::create()->update(['status'=>MsgModel::STATUS_DEL,'updated_at'=>HelpService::msectimeToStr(HelpService::msectime())],$where)){
                return ReponseCodeService::CODE_OK;
             }

             return ReponseCodeService::CODE_FAILE;
         }catch(\Throwable $t){
            echo $t->getMessage();
            return ReponseCodeService::CODE_SERVICE_UNAVAILABLE;
        }
    }
}